import Wnioskowanie
import Drzewo (Wyrażenie)

main :: IO ()
main = interact ogar


ogar :: String -> String
ogar wejście =
  let wyr = (read wejście):: Wyrażenie
  in show (wywnioskuj wyr)


{--
let i = "fun x -> x"
let s = "fun x -> fun y -> fun z -> x z (y z)"
let k = "fun x -> fun y -> x"
let o = "fun f -> fun g -> fun x -> f (g x)"
let y = "fun f -> (fun x -> f x x) (fun y -> f y y)"

(Funkcja "x" (Zmienna "x"))
(Funkcja "x" (Funkcja "y" (Funkcja "z"
                                   (Wywołanie
                                    (Wywołanie (Zmienna "x") (Zmienna "z"))
                                    (Wywołanie (Zmienna "y") (Zmienna "z"))))))

(Funkcja "x" (Funkcja "y" (Zmienna "x")))

(Funkcja "f" (Funkcja "g" (Funkcja "x"
                                   (Wywołanie
                                     (Zmienna "f")
                                    (Wywołanie (Zmienna "g") (Zmienna "x"))))))
(Funkcja "f" (Wywołanie
              (Funkcja "x" (Wywołanie (Wywołanie (Zmienna "f") (Zmienna "x")) (Zmienna "x")))
              (Funkcja "y" (Wywołanie (Wywołanie (Zmienna "f") (Zmienna "y")) (Zmienna "y")))))
--}
